package DB;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;

public class DB_Driver {
	/**
	 * dbutils-beanlist查询
	 * 
	 * @param sql  查询语句
	 * @param rsh  查询结果结构handler
	 * @return  查询结果
	 */
	public <T> T query00(String sql, ResultSetHandler<T> rsh) {
		//<T>为泛型，具体由ResultSetHandler<T>中传入的类型来决定
		
		T lst = null;
		try {
			//在dbutils工具中使用QueryRunner进行查询操作
			QueryRunner qr=new QueryRunner(DB_DataSource.getDataSource());
			//获取查询结果list
			lst=qr.query(sql, rsh);
		} catch (SQLException e) {
			// 异常处理
			System.out.println("生成dbutils-beanlist查询错误处理："+e.getMessage());
		}
		return lst;

	}
	
	
	
    /**
     * 
     * @param sql  查询语句
     * @param rsh  查询结果结构handler
     * @param obj  
     * @return  查询结果
     */
	public <T> T query01(String sql, ResultSetHandler<T> rsh,Object... obj) {
		//<T>为泛型，具体由ResultSetHandler<T>中传入的类型来决定
		
		T lst = null;
		try {
			//在dbutils工具中使用QueryRunner进行查询操作
			QueryRunner qr=new QueryRunner(DB_DataSource.getDataSource(),true);//new QueryRunner时加上TRUE可支持？占位符，或者在使用占位符时改用+拼接---若直接使用占位符则一般只支持=号后面的占位符
			//获取查询结果list
			lst=qr.query(sql, rsh,obj);
		} catch (SQLException e) {
			// 异常处理
			System.out.println("生成dbutils-beanlist查询错误处理："+e.getMessage());
		}
		return lst;

	}
	/**
	 * update新增和修改操作
	 * @param sql  更新语句
	 * @param obj  参数集合
	 * @return  所影响的记录条数
	 */
	public int update(String sql,Object... obj){
		int ii=0;
		try {
			//使用QueryRunner进行查询操作
			QueryRunner qr=new QueryRunner(DB_DataSource.getDataSource(),true);
			//获取查询结果ii---所影响的记录条数
			ii=qr.update(sql, obj);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return ii;
		
	}
	
	/**
	 * batch--新增和修改批处理操作
	 * @param sql  更新语句
	 * @param obj  参数集合
	 * @return  批处理所影响的记录条数
	 */
	public int[] batch(String sql,Object[][] obj){
		int[] ii=null;
		try {
			//使用QueryRunner进行查询操作
			QueryRunner qr=new QueryRunner(DB_DataSource.getDataSource(),true);
			//获取查询结果ii---批处理所影响的记录条数
			ii=qr.batch(sql, obj);
		} catch (SQLException e) {
			// 异常处理
			System.out.println("batch--新增和修改批处理操作-错误显示："+e.getMessage());
		}
		return ii;
		
	}
}
